home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_c / cuj0696.zip / DWYER.ZIP / QFLOAT / QCONST.C < prev    next >
C/C++ Source or Header  |  1996-03-13  |  10KB  |  300 lines

  1. /*  q type constants used by high precision check routines */
  2.  
  3. #include "qhead.h"
  4.  
  5. #if WORDSIZE ==  16
  6. #if NQ > 12
  7.  
  8. /* 0.0E0 */
  9. short qzero[NQ] = {
  10. 0000000,0000000,0000000,0000000,0000000,0000000,
  11. 0000000,0000000,0000000,0000000,0000000,0000000,
  12. 0,0,0,0,0,0,0,0,0,0,0,0};
  13. extern short qzero[];
  14. /* 5.0E-1 */
  15. short qhalf[NQ] = {
  16. 0000000,0040000,0000000,0100000,0000000,0000000,
  17. 0000000,0000000,0000000,0000000,0000000,0000000,
  18. 0,0,0,0,0,0,0,0,0,0,0,0};
  19. extern short qhalf[];
  20. /* 1.0E0 */
  21. short qone[NQ] = {
  22. 0000000,0040001,0000000,0100000,0000000,0000000,
  23. 0000000,0000000,0000000,0000000,0000000,0000000,
  24. 0,0,0,0,0,0,0,0,0,0,0,0};
  25. extern short qone[];
  26. /* 2.0E0 */
  27. short qtwo[NQ] = {
  28. 0000000,0040002,0000000,0100000,0000000,0000000,
  29. 0000000,0000000,0000000,0000000,0000000,0000000,
  30. 0,0,0,0,0,0,0,0,0,0,0,0};
  31. extern short qtwo[];
  32. short qthree[NQ] = {
  33. 0000000,0040002,0000000,0140000,0000000,0000000,
  34. 0000000,0000000,0000000,0000000,0000000,0000000,
  35. 0,0,0,0,0,0,0,0,0,0,0,0};
  36. extern short qthree[];
  37. short qnine[NQ] = {0,040004,0,0110000,0,0,0,0,0,0,0,0};
  38. extern short qnine[];
  39. /* 3.2E1 */
  40. short q32[NQ] = {
  41. 0000000,0040006,0000000,0100000,0000000,0000000,
  42. 0000000,0000000,0000000,0000000,0000000,0000000,
  43. 0,0,0,0,0,0,0,0,0,0,0,0};
  44. extern short q32[];
  45.  
  46. /*6.9314718055994530941723212145817656807550013436025525412068000949339362E-1*/
  47. short qlog2[NQ] = {
  48. 0x0000,0x4000,0x0000,0xb172,0x17f7,0xd1cf,0x79ab,0xc9e3,
  49. 0xb398,0x03f2,0xf6af,0x40f3,0x4326,0x7298,0xb62d,0x8a0d,
  50. 0x175b,0x8baa,0xfa2b,0xe7b8,0x7620,0x6deb,0xac98,0x5595,};
  51. extern short qlog2[];
  52.  
  53. /*  1.41421356237309504880168872420969807856967187537694
  54.  *    80731766797379907324784621070388503875343276415727e0
  55.  */
  56. short qsqrt2[NQ] = {
  57. 0x0000,0x4001,0x0000,0xb504,0xf333,0xf9de,0x6484,0x597d,
  58. 0x89b3,0x754a,0xbe9f,0x1d6f,0x60ba,0x893b,0xa84c,0xed17,
  59. 0xac85,0x8333,0x9915,0x4afc,0x8304,0x3ab8,0xa2c3,0xa8b2,};
  60. extern short qsqrt2[];
  61.  
  62. /* 2/sqrt(PI) =
  63.  *1.1283791670955125738961589031215451716881012586579977136881714434212849E0*/
  64. short oneopi[NQ] = {
  65. 0x0000,0x4001,0x0000,0x906e,0xba82,0x14db,0x688d,0x71d4,
  66. 0x8a7f,0x6bfe,0xc344,0x1409,0xa0eb,0xac3e,0x7517,0x39a1,
  67. 0x5830,0xcce6,0x20b0,0xc075,0x9cf8,0x5927,0x0f11,0x40c0};
  68. extern short oneopi[];
  69.  
  70. /* 3.14159265358979323846264338327950288419716939937510
  71.  *  582097494459230781640628620899862803482534211706798e0
  72.  */
  73. short qpi[NQ] = {
  74. 0x0000,0x4002,0x0000,0xc90f,0xdaa2,0x2168,0xc234,0xc4c6,
  75. 0x628b,0x80dc,0x1cd1,0x2902,0x4e08,0x8a67,0xcc74,0x020b,
  76. 0xbea6,0x3b13,0x9b22,0x514a,0x0879,0x8e34,0x04dd,0xef95,};
  77. extern short qpi[];
  78.  
  79.  
  80. /* 5.77215664901532860606512090082402431042159335939923
  81.  *   59880576723488486772677766467093694706329174674951e-1
  82.  */
  83. short qeul[NQ] = {
  84. 0x0000,0x4000,0x0000,0x93c4,0x67e3,0x7db0,0xc7a4,0xd1be,
  85. 0x3f81,0x0152,0xcb56,0xa1ce,0xcc3a,0xf65c,0xc019,0x0c03,
  86. 0xdf34,0x709a,0xffbd,0x8e4b,0x59fa,0x03a9,0xf0ee,0xd065,};
  87. extern short qeul[];
  88.  
  89. #else
  90.  
  91. /*                            qconst.c    */
  92. /*  q type constants used by high precision check routines */
  93.  
  94. /* 0.0 */
  95. short qzero[NQ] = {
  96. 0000000,0000000,0000000,0000000,0000000,0000000,
  97. 0000000,0000000,0000000,0000000,0000000,0000000};
  98. extern short qzero[];
  99.  
  100. /* 5.0E-1 */
  101. short qhalf[NQ] = {
  102. 0000000,0040000,0000000,0100000,0000000,0000000,
  103. 0000000,0000000,0000000,0000000,0000000,0000000};
  104. extern short qhalf[];
  105. /* 1.0E0 */
  106. short qone[NQ] = {
  107. 0000000,0040001,0000000,0100000,0000000,0000000,
  108. 0000000,0000000,0000000,0000000,0000000,0000000};
  109. extern short qone[];
  110. /* 2.0E0 */
  111. short qtwo[NQ] = {
  112. 0000000,0040002,0000000,0100000,0000000,0000000,
  113. 0000000,0000000,0000000,0000000,0000000,0000000};
  114. extern short qtwo[];
  115. short qthree[NQ] = {
  116. 0000000,0040002,0000000,0140000,0000000,0000000,
  117. 0000000,0000000,0000000,0000000,0000000,0000000};
  118. extern short qthree[];
  119. short qnine[NQ] = {0,040004,0,0110000,0,0,0,0,0,0,0,0};
  120. extern short qnine[];
  121. /* 3.2E1 */
  122. short q32[NQ] = {
  123. 0000000,0040006,0000000,0100000,0000000,0000000,
  124. 0000000,0000000,0000000,0000000,0000000,0000000};
  125. extern short q32[];
  126. /* 6.93147180559945309417232121458176568075500134360255E-1 */
  127. short qlog2[NQ] = {
  128. 0000000,0040000,0000000,0130562,0013767,0150717,
  129. 0074653,0144743,0131630,0001762,0173257,0040363};
  130. extern short qlog2[];
  131. /* 1.41421356237309504880168872420969807856967187537695E0 */
  132. short qsqrt2[NQ] = {
  133. 0000000,0040001,0000000,0132404,0171463,0174736,
  134. 0062204,0054575,0104663,0072512,0137237,0016557};
  135. extern short qsqrt2[];
  136. /* 2/sqrt(PI) =
  137.  * 1.12837916709551257389615890312154517168810125865800E0 */
  138. short oneopi[NQ] = {
  139. 0000000,0040001,0000000,0110156,0135202,0012333,
  140. 0064215,0070724,0105177,0065776,0141504,0012012};
  141. extern short oneopi[];
  142. /* 3.14159265358979323846264338327950288419716939937511E0 */
  143. short qpi[NQ] = {
  144. 0000000,0040002,0000000,0144417,0155242,0020550,
  145. 0141064,0142306,0061213,0100334,0016321,0024402};
  146. extern short qpi[];
  147. /* 5.7721566490153286060651209008240243104215933593992E-1 */
  148. short qeul[NQ] = {
  149. 0000000,0040000,0000000,0111704,0063743,0076660,
  150. 0143644,0150676,0037601,0000522,0145526,0120717};
  151. extern short qeul[];
  152. #endif
  153. #endif /* WORDSIZE 16 */
  154.  
  155. #if WORDSIZE == 32
  156. #if NQ > 8
  157. /*                            qc100.c    */
  158. /*  q type constants used by high precision check routines */
  159.  
  160. /* 0.0E0 */
  161. QELT qzero[NQ] = {
  162. 0,0x0000,0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
  163. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  164. extern QELT qzero[];
  165. /* 5.0E-1 */
  166. QELT qhalf[NQ] = {
  167. 0,EXPONE-1,0,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,
  168. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  169. extern QELT qhalf[];
  170. /* 1.0E0 */
  171. QELT qone[NQ] = {
  172. 0,EXPONE,0,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,
  173. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  174. extern QELT qone[];
  175. /* 2.0E0 */
  176. QELT qtwo[NQ] = {
  177. 0,EXPONE+1,0,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,
  178. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  179. extern QELT qtwo[];
  180. /* 3.0E0 */
  181. QELT qthree[NQ] = {
  182. 0,EXPONE+1,0,0xc0000000,0x00000000,0x00000000,0x00000000,0x00000000,
  183. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  184. extern QELT qthree[];
  185. /* 9.0e0 */
  186. QELT qnine[NQ] = {
  187. 0,EXPONE+3,0,0x90000000,0x00000000,0x00000000,0x00000000,0x00000000,
  188. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  189. extern QELT qnine[];
  190. /* 3.2E1 */
  191. QELT q32[NQ] = {
  192. 0,EXPONE+5,0,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,
  193. 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000};
  194. extern QELT q32[];
  195.  
  196. /*6.9314718055994530941723212145817656807550013436025525412068000949339362E-1*/
  197. QELT qlog2[NQ] = {
  198. 0,EXPONE-1,0,0xb17217f7,0xd1cf79ab,0xc9e3b398,0x03f2f6af,0x40f34326,
  199. 0x7298b62d,0x8a0d175b,0x8baafa2b,0xe7b87620,0x6debac98,0x559552fb,};
  200. extern QELT qlog2[];
  201.  
  202. /*  1.41421356237309504880168872420969807856967187537694
  203.  *    80731766797379907324784621070388503875343276415727e0
  204.  */
  205. QELT qsqrt2[NQ] = {
  206. 0,EXPONE,0,0xb504f333,0xf9de6484,0x597d89b3,0x754abe9f,0x1d6f60ba,
  207. 0x893ba84c,0xed17ac85,0x83339915,0x4afc8304,0x3ab8a2c3,0xa8b1fe70,};
  208. extern QELT qsqrt2[];
  209.  
  210. /* 2/sqrt(PI) =
  211.  *1.1283791670955125738961589031215451716881012586579977136881714434212849E0*/
  212. QELT oneopi[NQ] = {
  213. 0,EXPONE,0,0x906eba82,0x14db688d,0x71d48a7f,0x6bfec344,0x1409a0eb,
  214. 0xac3e7517,0x39a15830,0xcce620b0,0xc0759cf8,0x59270f11,0x40c03609};
  215. extern QELT oneopi[];
  216.  
  217. /* 3.14159265358979323846264338327950288419716939937510
  218.  *  582097494459230781640628620899862803482534211706798e0
  219.  */
  220. QELT qpi[NQ] = {
  221. 0,EXPONE+1,0,0xc90fdaa2,0x2168c234,0xc4c6628b,0x80dc1cd1,0x29024e08,
  222. 0x8a67cc74,0x020bbea6,0x3b139b22,0x514a0879,0x8e3404dd,0xef9519b4,};
  223. extern QELT qpi[];
  224.  
  225.  
  226. /* 5.772156649015328606065120900824024310421593359399235988
  227.      057672348848677267776646709369470632917467495146314472E-1  */
  228. QELT qeul[NQ] = {
  229. 0,EXPONE-1,0,0x93c467e3,0x7db0c7a4,0xd1be3f81,0x0152cb56,0xa1cecc3a,
  230. 0xf65cc019,0x0c03df34,0x709affbd,0x8e4b59fa,0x03a9f0ee,0xd0649ccb,};
  231. extern QELT qeul[];
  232.  
  233. #else
  234.  
  235.  /*                            qconst.c    */
  236. /*  q type constants used by high precision check routines */
  237.  
  238. /* 0.0 */
  239. QELT qzero[NQ] = {
  240. 0000000,0000000,0000000,0000000,0000000,0000000,
  241. 0000000,0000000,0000000,0000000,0000000,0000000};
  242. extern QELT qzero[];
  243.  
  244. /* 5.0E-1 */
  245. QELT qhalf[NQ] = {
  246. 0000000,EXPONE-1,0000000,0100000,0000000,0000000,
  247. 0000000,0000000,0000000,0000000,0000000,0000000};
  248. extern QELT qhalf[];
  249. /* 1.0E0 */
  250. QELT qone[NQ] = {
  251. 0000000,EXPONE,0000000,0100000,0000000,0000000,
  252. 0000000,0000000,0000000,0000000,0000000,0000000};
  253. extern QELT qone[];
  254. /* 2.0E0 */
  255. QELT qtwo[NQ] = {
  256. 0000000,EXPONE+1,0000000,0100000,0000000,0000000,
  257. 0000000,0000000,0000000,0000000,0000000,0000000};
  258. extern QELT qtwo[];
  259. QELT qthree[NQ] = {
  260. 0000000,EXPONE+1,0000000,0140000,0000000,0000000,
  261. 0000000,0000000,0000000,0000000,0000000,0000000};
  262. extern QELT qthree[];
  263. QELT qnine[NQ] = {
  264. 0000000,EXPONE+3,0000000,0110000,0000000,0000000,
  265. 0000000,0000000,0000000,0000000,0000000,0000000};
  266. extern QELT qnine[];
  267. /* 3.2E1 */
  268. QELT q32[NQ] = {
  269. 0000000,EXPONE+5,0000000,0100000,0000000,0000000,
  270. 0000000,0000000,0000000,0000000,0000000,0000000};
  271. extern QELT q32[];
  272. /* 6.93147180559945309417232121458176568075500134360255E-1 */
  273. QELT qlog2[NQ] = {
  274. 0000000,EXPONE-1,0000000,0130562,0013767,0150717,
  275. 0074653,0144743,0131630,0001762,0173257,0040363};
  276. extern QELT qlog2[];
  277. /* 1.41421356237309504880168872420969807856967187537695E0 */
  278. QELT qsqrt2[NQ] = {
  279. 0000000,EXPONE,0000000,0132404,0171463,0174736,
  280. 0062204,0054575,0104663,0072512,0137237,0016557};
  281. extern QELT qsqrt2[];
  282. /* 2/sqrt(PI) =
  283.  * 1.12837916709551257389615890312154517168810125865800E0 */
  284. QELT oneopi[NQ] = {
  285. 0000000,EXPONE,0000000,0110156,0135202,0012333,
  286. 0064215,0070724,0105177,0065776,0141504,0012012};
  287. extern QELT oneopi[];
  288. /* 3.14159265358979323846264338327950288419716939937511E0 */
  289. QELT qpi[NQ] = {
  290. 0000000,EXPONE+1,0000000,0144417,0155242,0020550,
  291. 0141064,0142306,0061213,0100334,0016321,0024402};
  292. extern QELT qpi[];
  293. /* 5.7721566490153286060651209008240243104215933593992E-1 */
  294. QELT qeul[NQ] = {
  295. 0,EXPONE-1,0,0x93c467e3,0x7db0c7a4,0xd1be3f81,0x0152cb56,0xa1cecc3a,
  296. 0xf65cc019,0x0c03df34,0x709affbd,0x8e4b59fa,0x03a9f0ee,0xd0649ccb};
  297. extern QELT qeul[];
  298. #endif
  299. #endif /* WORDSIZE 32 */
  300.